package ch;

import java.util.SortedMap;

/**
 * 一致性hash接口
 * @author yuh
 * @date 2018/4/26 15:05
 */
public interface ConsistentHash<T> {

    /**
     * 加入一个元素
     * @param key
     * @param val
     * @return 添加到服务器的索引
     */
    int add(String key,T val);

    /**
     * 移除一个元素
     * @param key
     * @return
     */
    T remove(String key);

    /**
     * 添加服务器
     * @param index 服务器的编号
     * @param server map模拟机器
     */
    void addServerNode(int index, SortedMap<Integer,T> server);

    /**
     * 移除一个服务器
     * @param index 服务器的编号
     * @return
     */
    boolean removeServerNode(int index);

    /**
     * 取出一个元素
     * @param key
     * @return
     */
    T get(String key);
}
